Firebird
PostgreSQL

Firebird / Interbase to PostgreSQL Converter

Schema, indexes, foreign keys and rows into PostgreSQL, Amazon RDS, Aurora, Azure, or Google Cloud SQL - once, or on a schedule while you cut over.

Version
5.0.53
Release Date
Sept. 30, 2026
Size
22.0 MB
Platform
Windows 10 or later

Rather not run it yourself?

Let us do the migration →

Copy a Firebird database into PostgreSQL without writing the target schema by hand. DBConvert connects to the Firebird server and to PostgreSQL, proposes a PostgreSQL type for every column, and creates the tables, indexes, and foreign keys before it moves a row.

  • Reads Firebird databases on a local or remote Firebird server. Tested against Firebird 3 and Firebird 5, including the INT128, DECFLOAT and time-zone types Firebird 4 introduced.
  • Writes to PostgreSQL on your own server, Amazon RDS / Aurora, Azure Database for PostgreSQL, Google Cloud SQL, or Supabase.
  • Converts the database once, or keeps PostgreSQL in step with Firebird on a schedule while you cut over. The same download converts PostgreSQL back into Firebird.
  • Runs on Windows as a desktop application.
How it runs

A Windows application that talks to both servers

You install it, point it at the Firebird server and at PostgreSQL, and transfer directly between the servers. Connections, tables, and mappings remain available on separate screens as you refine the job.

A path, not a database name

Firebird has no list of databases to pick from. You enter the server's host and the database's path on that server - a .fdb or .gdb file - or its alias. The Browse button opens a file dialog only when the server is this machine, because the file has to exist where the server runs.

The character set is chosen, not guessed

The connection's character set decides how every text value is read. The list offers only the sets the Firebird driver can map, with UTF8 first. NONE is not offered: the driver would read it as Windows-1251.

Saved and repeatable

A job stores both connections, the table selection, and the options. Run it again from the interface, or start it by name from a batch file or Task Scheduler with --run-job. Sessions saved in the previous Firebird & PostgreSQL converter can be imported.

Two modes, one download

Convert once, or keep PostgreSQL in step with Firebird

One download covers both. You choose the mode when you set up the job.

One-time conversion

Schema, indexes, foreign keys and rows in one pass, with the type mapping you reviewed.

  • The run reports rows received per table - compare them against the source before you switch the application over to PostgreSQL.

Repeat synchronization

Keep the Firebird application running while PostgreSQL is loaded and tested.

  • Run the job on a schedule, or start it by hand.
  • Rows are compared by key and only the ones that differ are written, so a sync straight after a conversion has nothing to do.
  • A table without a primary key gives the comparison nothing to match on, so it is replaced in full on every run.
What needs attention

How DBConvert handles the Firebird → PostgreSQL differences

Every mapping below is a default you can review or override per column before the run.

In Firebird Why it does not carry over What DBConvert does
Numbers
NUMERIC, DECIMAL Firebird enforces the size of the storage, not the declared precision: a NUMERIC(4,2) column accepts 327.67. Created with the precision of that storage - 5, 10, 18 or 39 digits - and the declared scale, so every value Firebird accepted fits.
INT128 Added in Firebird 4. PostgreSQL has no 128-bit integer. Becomes NUMERIC(39), which holds the full range.
DECFLOAT(16), DECFLOAT(34) Decimal floating point, with an exponent range no fixed-precision column can declare. Becomes NUMERIC without a precision, which holds a DECFLOAT(34) value at any exponent, and NaN.
BOOLEAN Nothing to reconcile - both engines have a real boolean. Stays BOOLEAN.
Date and time
TIME Firebird keeps time of day to a ten-thousandth of a second. Arrives as TIME with all four fractional digits: 23:59:59.9999 stays 23:59:59.9999.
TIME WITH TIME ZONE, TIMESTAMP WITH TIME ZONE Added in Firebird 4. The value carries a zone, either a region such as Europe/Prague or an offset. Become TIMETZ(4) and TIMESTAMPTZ(4). The instant is kept; a region name is not, because PostgreSQL does not store one.
Text
CHAR(n), VARCHAR(n) Firebird's system tables record a UTF8 column's length in bytes, four per character. Created at the declared length in characters: a UTF8 CHAR(10) stays CHAR(10). A VARCHAR longer than 4,000 characters becomes TEXT.
BLOB SUB_TYPE TEXT Text of unlimited length, stored in the column's character set. Becomes TEXT, read in the connection's character set so Czech, Cyrillic or Japanese text arrives as written.
Binary
BLOB SUB_TYPE BINARY, BINARY, VARBINARY, CHARACTER SET OCTETS Raw bytes, including the CHAR(16) CHARACTER SET OCTETS columns older databases use for UUID keys. Become BYTEA, read as bytes rather than text, so a zero byte at the start, middle or end of a value survives.
Structure
Identifier case Firebird stores unquoted names in upper case; PostgreSQL folds unquoted names to lower case. Names arrive as Firebird stores them, so a Firebird customer table is "CUSTOMER" in PostgreSQL and has to be quoted in queries. Rename tables and columns on the mapping screen before the run.

Procedural code stays behind

The migration covers tables - their fields, types, defaults, and indexes - and the foreign keys. Firebird PSQL stored procedures, triggers, computed-by columns, and event handlers stay in the source and are rewritten by hand in PL/pgSQL. That is rewrite work on any route.

Where this tool stops

There is no SSH tunnel on the Firebird side: the Firebird server's port, 3050 by default, has to be reachable from the machine running DBConvert. Synchronization is scheduled, not continuous - each run compares the tables and writes the difference, which suits a staged cut-over rather than replication within seconds.

Supported versions and services

Firebird

  • Firebird 2.x, 3.x, 4.x, 5.x and InterBase

PostgreSQL

  • PostgreSQL 8.x through 17.x
  • Amazon RDS / Aurora for PostgreSQL, Azure Database for PostgreSQL, Google Cloud SQL, Supabase
  • PostgreSQL schemas (public, custom schemas)

How to migrate Firebird to PostgreSQL

DBConvert opens in GUI mode and walks the job from connection to commit:

1

Connect to Firebird source database

Specify the username/password and host/port parameters if your source database requires login credentials.

Connect to Firebird source database from DBConvert

Firebird source

Enter the Firebird server's host and the database's path on that server, or its alias, then pick the connection character set — UTF8 unless the database was created with another. See Firebird source settings.

2

Connect to PostgreSQL destination database

Specify parameters for the destination database similar to the source, defining connection settings and username/password pairs.

Connect to PostgreSQL target database from DBConvert

PostgreSQL target

Use the PostgreSQL connection guide for local PostgreSQL, Amazon RDS / Aurora, Azure Database for PostgreSQL, Google Cloud SQL, or Supabase.

Steps 3-6: the same for every database pair

Source and target are connected - steps 1 and 2 above. What follows is identical whichever two databases you picked, so it lives in one place. Each step below opens at its own section.

Open the full guide

All four steps in one page, plus software features, command-line mode, scheduler, and system requirements.

See all features

Move Firebird data into PostgreSQL

Download the current build and run the first job against your own database.

Windows Windows 10 or later · 22.0 MB